<?php
namespace app\admin\Controller;

use frame\libs\Session;
use \frame\libs\BaseController;
use app\admin\model\UserModel;
use app\admin\model\RoleModel;
use frame\vendor\captcha\CaptchaBuilder;

/**
 * 登录
 */
class LoginController extends BaseController
{ 
    /**
     * 登录页
     * @return [type] [description]
     */
    public function index()
    {
        include VIEW_PATH . 'login/login.html';
    }

    /**
     * 登录
     * @return [type] [description]
     */
    public function login()
    {
        // post请求
        if (!(isset($_POST) && $_POST)) {
            echo $this->error(null, "非法请求！");
            return false;
        }
        // 根据用户名查询用户信息
        $user = UserModel::getInstance()->getUserByUsername($_POST['username']);
        //判断用户是否存在和密码是否一致
        if (!$user || md5($_POST['password']) != $user['password']) {
            echo $this->error(null, "用户名或密码不正确！");
            return false;
        }
        // 用户是否启用
        if (!$user['status']) {
            echo $this->error(null, "账号被禁用，请联系管理员！");
            return false;
        }
        // 记录登录时间和次数
        if (!$this->recordLoginInfo($user['uid'])) {
            echo $this->error(null, "用户信息更新错误！");
            return false;
        }
        // 获取角色信息
        $role = RoleModel::getInstance()->getRoleById($user['role_id']);
        // 角色是否启用
        if (!$role['status']) {
            echo $this->error(null, "账号被禁用，请联系管理员！");
            return false;
        }
        // 生成会话
        Session::set('uid', $user['uid']);
        Session::set('username', $user['username']);
        // 返回
        $data = array('home_page' => $role['home_page']);
        echo $this->success($data, "登录成功!");
        return true;
    }

    public function logout()
    {
        session_destroy();
        echo $this->success(null, "退出登录成功！");
        return true;
    }

    /**
     * 记录登录时间和次数
     * @param  [type] $uid [description]
     * @return [type]      [description]
     */
    private function recordLoginInfo($uid)
    {
        $data = array('uid'=>$uid, 'last_login'=>time());
        return UserModel::getInstance()->updateLoginInfo($data);
    }

    /**
     * 验证码
     * @return [type] [description]
     */
    public function captcha()
    {
        $captch = new CaptchaBuilder();
        $captch->initialize([
            'width' => 150,     // 宽度
            'height' => 50,     // 高度
            'line' => false,    // 直线
            'curve' => true,    // 曲线
            'noise' => 2,       // 噪点背景
            'fonts' => []       // 字体
        ]);
        $captch->create();
        $_SESSION['captch'] = $captch->getText();
        $captch->output(1);
    }

}